# @Author：silence
# @Email：792245022@qq.com
# @Date：2025/2/18 2:09

"""
1、Python 语言的动态特性，会出现伪私有属性的情况
"""

class Clerk:

    name = None
    __job = None
    __salary = None

    def __init__(self, name, job, salary):
        self.name = name
        self.__job = job
        self.__salary = salary

    def set_job(self, job):
        self.__job = job

    def get_job(self):
        return self.__job

    def set_salary(self, salary):
        self.__salary = salary

    def get_salary(self):
        return self.__salary

    def __hi(self):
        print("hi")

    def __str__(self):
        return f"name = {self.name}, job = {self.__job}, salary = {self.__salary}"

clerk = Clerk("tiger", "python 工程师", 20000)

"""
如果这样使用，因为 Python 语言的动态特性，会动态的创建属性 __job，但是这个属性
和我们在类中定义的私有属性 __job 并不是同一个变量，我们在类中定义的 __job 
私有属性完整的名字为：_Clerk__job，下面的名称只为 __job，而这个属性是公开的
"""
clerk.__job = "Go 工程师"
print(f"clerk = {clerk}")

# 获取真正的私有属性 __job
print(f"{clerk.get_job()}")